Skip to content

Release 3.2.0#447

Open
jonasscheid wants to merge 130 commits intomasterfrom
dev
Open

Release 3.2.0#447
jonasscheid wants to merge 130 commits intomasterfrom
dev

Conversation

@jonasscheid
Copy link
Copy Markdown
Collaborator

@jonasscheid jonasscheid commented Apr 22, 2026

Added

  • Added support for single run quantification #438
  • Added per-sample search parameter support via samplesheet with SearchPreset column and individual parameter overrides #439
  • Added PRIDE ID and SDRF sheet support #445
  • Added ion mobility export and MultiQC distribution plot for timsTOF data #441

Fixed

  • Fixed EPICORE running only once instead of per sample when --fasta is used, by broadcasting ch_fasta to EPICORE via .first() #446
  • Fixed SUMMARIZE_RESULTS crash with --quantify caused by OpenMS 3.5.0 TextExporter phantom column bug (OpenMS/OpenMS#9120) #444
  • Fixed an issue where stripping the sequence in SUMMARIZE_RESULTS did not work for complex modifications #436

Changed

  • Migrate to topic channels #431

Dependencies

Dependency Old version New version
easypqp 0.1.53 0.1.57
MultiQC 1.31.0 1.33.0
Nf-core 3.4.1 3.5.1
openms 3.4.1 3.5.0
tdf2mzml 0.3.0 0.4.0

PR checklist

  • This comment contains a description of changes (with reason).
  • If you've fixed a bug or added code that should be tested, add tests!
  • If you've added a new tool - have you followed the pipeline conventions in the contribution docs
  • If necessary, also make a PR on the nf-core/mhcquant branch on the nf-core/test-datasets repository.
  • Make sure your code lints (nf-core pipelines lint).
  • Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
  • Check for unexpected warnings in debug mode (nextflow run . -profile debug,test,docker --outdir <OUTDIR>).
  • Usage Documentation in docs/usage.md is updated.
  • Output Documentation in docs/output.md is updated.
  • CHANGELOG.md is updated.
  • README.md is updated (including new tool citations and authors/contributors).

nf-core-bot and others added 30 commits November 20, 2025 09:31
Co-authored-by: jonasscheid <43858870+jonasscheid@users.noreply.github.com>
Change Channel. to channel. in all Nextflow scripts
Updated CHANGELOG for version 3.2.0 with changes and dependency updates.
Co-authored-by: jonasscheid <43858870+jonasscheid@users.noreply.github.com>
Update pipeline version in test snapshots from v3.1.0 to v3.2.0dev
Co-authored-by: jonasscheid <43858870+jonasscheid@users.noreply.github.com>
Remove cache buster artifacts from topic channel migration
Added function 'strip_modifications' to parse sequences. The --variable_mods flag is no longer required.
Add changelog entry for version 3.2.0dev with a fix.
Added a new version section for 3.2.0dev with details.
Fix #428: add strip_modifications and simplify sequence parsing
jonasscheid and others added 20 commits March 17, 2026 09:30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…Tuple

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix global FDR null:null precursor length by propagating search params in meta
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…xporter column mismatch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix SUMMARIZE_RESULTS crash with --quantify
…put modes

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ch_fasta is a queue channel with one item when --fasta is set.
Paired positionally with SUMMARIZE_RESULTS.out.epicore_input
(N items), EPICORE runs only once instead of per sample. Convert
ch_fasta to a value channel with .first() so it broadcasts.

Symptom: with --epicore, only one results/<sample>.tsv file is
produced regardless of sample count.
fix: EPICORE runs only once when --fasta is used
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nf-core-bot
Copy link
Copy Markdown
Member

Warning

Newer version of the nf-core template is available.

Your pipeline is using an old version of the nf-core template: 3.5.1.
Please update your pipeline to the latest version.

For more documentation on how to update your pipeline, please see the nf-core documentation and Synchronisation documentation.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 22, 2026

nf-core pipelines lint overall result: Failed ❌

Posted for pipeline commit d454666

+| ✅ 311 tests passed       |+
#| ❔   1 tests were ignored |#
!| ❗   4 tests had warnings |!
-| ❌   3 tests failed       |-
Details

❌ Test failures:

❗ Test warnings:

  • files_exist - File not found: conf/igenomes.config
  • files_exist - File not found: conf/igenomes_ignored.config
  • pipeline_todos - TODO string in nextflow.config: Specify any additional parameters here
  • schema_lint - Input mimetype is missing or empty

❔ Tests ignored:

  • files_unchanged - File ignored due to lint config: .github/CONTRIBUTING.md

✅ Tests passed:

Run details

  • nf-core/tools version 3.5.1
  • Run at 2026-04-23 12:14:48

jonasscheid and others added 2 commits April 23, 2026 11:03
…ic version lookup.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pin tdf2mzml container to 0.4_noentry
Copy link
Copy Markdown
Member

@pinin4fjords pinin4fjords left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI-assisted review

Disclosure: I drafted this review with AI assistance (Claude), then went through each point with the model, cross-checked claims against the code (and in some cases a minimal Nextflow reproducer), and satisfied myself before posting. Severity labels are mine; anything I felt unsure about I either demoted or dropped.

Big, well-scoped release PR — topic-channel migration and search-preset plumbing look good. Inline comments cover the individual findings (two HIGH, five MEDIUM, six LOW). Highlights worth calling out from the summary: the idmassaccuracy meta.yml is copy-pasted from idfilter; the fileconverter version-extraction sed is silently broken (missing backslash escape); resolveSearchParams CLI-override detection has the exact design issues that were debated and rejected in nf-core/differentialabundance#472.

ℹ️ Not inlinednf-core pipelines lint reports 9 failures, all expected template drift (missing docs/CONTRIBUTING.md, files_unchanged for .gitignore, .prettierignore, linting workflows, logos). Not blocking; nf-core pipelines lint --fix files_unchanged would clear the noise.

A separate follow-up review covers local-module / upstream-contribution concerns.

Comment thread modules/local/openms/idmassaccuracy/meta.yml
Comment thread modules/local/openms/fileconverter/main.nf
Comment thread modules/local/openms/fileconverter/environment.yml
Comment thread conf/modules.config
def result = new LinkedHashMap(meta)

searchParamKeys.each { key ->
def cliOverride = (workflow.commandLine =~ /--${key}[\s=]/).find()
Copy link
Copy Markdown
Member

@pinin4fjords pinin4fjords Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 MEDIUM — Regex-matching workflow.commandLine has silent-failure modes worth flagging before release:

  • -params-file foo.yaml values aren't matched — preset silently wins even though the user set the value.
  • Hyphenated CLI form (--precursor-mass-tolerance) isn't matched; Nextflow accepts it but the regex keys are underscored.
  • -c overrides.config values never reach the regex either.

Same design space was debated in nf-core/differentialabundance#472. @bentsherman's position there was that the Nextflow script sees only resolved params and can't know their source, and that session.cliParams (tried in PR #623) is an internal API that won't survive strict syntax in Nextflow 26.04. Regex parsing was rejected as fragile; schema-default comparison was rejected as silent-failure-prone. Final resolution was a dual-mode split: profiles for single-run, paramsheet for benchmarking.

Options, increasing effort:

  1. Document the limitation in docs/usage.md#parameter-precedence.
  2. Drop the override concept — precedence becomes preset > defaults.
  3. Mirror the differentialabundance split: preset always wins; uniform overrides go via a profile.

Happy to defer, but worth an explicit decision rather than inheriting an approach argued down in a sibling pipeline.

Comment thread assets/search_presets.tsv
Comment thread subworkflows/local/utils_nfcore_mhcquant_pipeline/main.nf
Comment thread tests/test_single_quant.nf.test
Comment thread conf/test_single_quant.config
Comment thread modules/local/openms/idmassaccuracy/main.nf
Copy link
Copy Markdown
Member

@pinin4fjords pinin4fjords left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI-assisted review (Claude, on behalf of @pinin4fjords) — searches against nf-core/modules and OpenMS 3.5.0 source were automated with the model; I verified each claim before posting.

Local modules — upstream contribution

Follow-up to the main review. I automated the relevant nf-core/modules and OpenMS source searches together with the main review; double-checked each claim before posting.

Where a local module is needed, patching the upstream equivalent should usually come before forking it — the bar for an entirely new local module should be higher than for an ext.args / ext.prefix / small upstream PR.

New modules — should be ported upstream before 3.2.0 is tagged

Four of the five new local modules on this PR are generic proteomics utilities:

New local module Why upstream
modules/local/openms/fileconverter Pure OpenMS TOPP wrapper. nf-core/openms/ already hosts decoydatabase, filefilter, idfilter, idmerger, idripper, idscoreswitcher, peakpickerhires, peptideindexer, psmfeatureextractor, textexporter. fileconverter is the same shape.
modules/local/pridepy/download_file Generic PRIDE file fetcher.
modules/local/pridepy/fetch_sdrf Generic.
modules/local/sdrf_pipelines/parse_sdrf quantms carries its own local sdrfparsing calling the same parse_sdrf tool with a different subcommand (convert-openms vs convert-mhcquant) and an older pin (0.0.26 vs 0.1.2). A shared upstream module with a subcommand argument would serve both.

modules/local/openms/idmassaccuracy is the fifth new local module but is excluded: IDMassAccuracy.cpp was removed in OpenMS 3.5.0, the upstream module was deliberately broken with assert false, local port pinned to openms 3.4.1 is correct. (The meta.yml is still wrong — flagged in the main review.)

Existing locals — should be ported upstream before the next release

Not blocking 3.2.0.

Upstream module already exists — switch over, patching upstream where needed

  • modules/local/openms/textexporternf-core/openms/textexporter exists. Output naming difference (${prefix}_exported.tsv vs ${prefix}.tsv) is ext.prefix.
  • modules/local/openms/psmfeatureextractornf-core/openms/psmfeatureextractor exists. Local fork adds a second input (feature_file) with awk to surface MS2Rescore feature names as CLI args. Small upstream PR adding an optional second input.
  • modules/local/untarnf-core/untar exists. Local fork auto-computes tar depth from a .d/ match. Could be ext.args2 = '--strip-components=N' or a strip_components param on the upstream module.
  • modules/local/unzipnf-core/unzip exists. Local emits *.d from the working dir instead of ${prefix}/. ext.prefix / output glob.

OpenMS TOPP wrappers not yet upstream — should be contributed

All tools present in OpenMS 3.5.0 source. openmsthirdparty/cometadapter is already upstream as a template.

  • modules/local/openms/featurefinderidentification
  • modules/local/openms/idconflictresolver
  • modules/local/openms/mapaligneridentification
  • modules/local/openms/maprttransformer
  • modules/local/openms/mztabexporter
  • modules/local/openmsthirdparty/percolatoradapter
  • modules/local/openmsthirdparty/featurelinkerunlabeledkd

Duplicated across proteomics pipelines — one upstream module would serve both

  • modules/local/tdf2mzml — quantms has its own local copy.
  • modules/local/easypqp/convert, modules/local/easypqp/library
  • modules/local/ms2rescore

@nickp60
Copy link
Copy Markdown

nickp60 commented Apr 27, 2026

Without having tried the pipeline, the changes look good to me! Do you think the warning "Environment variable SINGULARITYENV_NXF_DEBUG is set, but APPTAINERENV_NXF_DEBUG is preferred" is causing the directory deletion issue that's failing the singularity tests?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants